// Kony


#include "BaseGameplayTags.h"
#include "GameplayTagsManager.h"

//静态游戏标签实例
FBaseGameplayTags FBaseGameplayTags::GameplayTags;

void FBaseGameplayTags::InitializeNativeGameplayTags()
{
	//添加标签 参数（标签完整名称，描述）并赋值到静态实例变量中用于读取
	GameplayTags.SelectedTarget = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("SelectedTarget"), FString("选择目标"));
	/*
	 *主要属性
	 */
	GameplayTags.Attributes_Primary_Strength = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Primary.Strength"), FString("力量，影响近战攻击和承受伤害的能力"));
	GameplayTags.Attributes_Primary_Intelligence = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Primary.Intelligence"), FString("灵力，影响法术攻击和法力恢复"));
	GameplayTags.Attributes_Primary_SoulPower = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Primary.SoulPower"), FString("神魂，神魂之力影响召唤物和特殊技能的效果"));
	GameplayTags.Attributes_Primary_Resilience = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Primary.Resilience"), FString("灵脉，法力恢复力，施法释放速度"));
	GameplayTags.Attributes_Primary_Vigor = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Primary.Vigor"), FString("体魄，影响生命和防御"));
	GameplayTags.Attributes_Primary_Spirit = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Primary.Spirit"), FString("神识，提升弱点探查 增加暴击几率，影响感知范围和特殊技能的使用"));
	GameplayTags.Attributes_Primary_Agility = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Primary.Agility"), FString("敏捷，影响移动速度和闪避率"));
	GameplayTags.Attributes_Primary_Insight = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Primary.Insight"), FString("心境，影响抗性对天地法则的感悟"));

	/*
	 * 核心主要属性
	 */
	// GameplayTags.Attributes_Primary_Health = UGameplayTagsManager::Get().AddNativeGameplayTag(
	// 	FName("Attributes.Primary.Health"), FString("生命值，表示角色当前的生命值"));
	// GameplayTags.Attributes_Primary_Mana = UGameplayTagsManager::Get().AddNativeGameplayTag(
	// 	FName("Attributes.Primary.Mana"), FString("法力值，表示角色当前的法力值"));

	/*
	 * 次要属性
	 */
	GameplayTags.Attributes_Secondary_MaxHealth = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.MaxHealth"), FString("最大生命值，表示角色的最大生命值"));
	GameplayTags.Attributes_Secondary_MaxMana = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.MaxMana"), FString("最大法力值，表示角色的最大法力值"));
	GameplayTags.Attributes_Secondary_GhostHealth = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.GhostHealth"), FString("幽灵生命值，用于UI显示持续恢复效果的最终值"));
	GameplayTags.Attributes_Secondary_GhostMana = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.GhostMana"), FString("幽灵法力值，用于UI显示持续恢复效果的最终值"));
	GameplayTags.Attributes_Secondary_Armor = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.Armor"),FString("防御力，检少收到的攻击伤害"));
	GameplayTags.Attributes_Secondary_ArmorPenetration = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.ArmorPenetration"), FString("护甲穿透，增加对敌人护甲的无视程度"));
	GameplayTags.Attributes_Secondary_SpellPenetration = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.SpellPenetration"), FString("法术穿透，增加对敌人法术抗性的无视程度"));
	GameplayTags.Attributes_Secondary_BlockChance = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.BlockChance"), FString("格挡几率，增加格挡攻击的概率"));
	GameplayTags.Attributes_Secondary_CriticalHitChance = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.CriticalHitChance"), FString("暴击几率，增加造成暴击的概率"));
	GameplayTags.Attributes_Secondary_CriticalHitDamage = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.CriticalHitDamage"), FString("暴击伤害，增加暴击时造成的额外伤害"));
	GameplayTags.Attributes_Secondary_CriticalHitResistance = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.CriticalHitResistance"), FString("暴击抗性，减少受到暴击的概率"));
	GameplayTags.Attributes_Secondary_HealthRegeneration = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.HealthRegeneration"), FString("生命恢复，增加生命值的自然恢复速度"));
	GameplayTags.Attributes_Secondary_ManaRegeneration = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.ManaRegeneration"), FString("法力恢复，增加法力值的自然恢复速度"));
	GameplayTags.Attributes_Secondary_MovementSpeed = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.MovementSpeed"), FString("移动速度，增加角色的移动速度"));
	GameplayTags.Attributes_Secondary_AttackSpeed = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.AttackSpeed"), FString("攻击速度，增加角色的攻击频率"));
	GameplayTags.Attributes_Secondary_SpellCastingSpeed = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.SpellCastingSpeed"), FString("施法速度，增加施法的速度"));
	GameplayTags.Attributes_Secondary_HitChance = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.HitChance"), FString("命中几率，增加攻击命中的概率"));
	GameplayTags.Attributes_Secondary_DodgeRate = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.DodgeRate"), FString("闪避率，增加躲避攻击的概率"));
	GameplayTags.Attributes_Secondary_PerceptionRange = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.PerceptionRange"), FString("感知范围，增加角色的感知距离"));
	GameplayTags.Attributes_Secondary_SummonDuration = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.SummonDuration"), FString("召唤物持续时间，增加召唤物的持续时间"));
	GameplayTags.Attributes_Secondary_ProtectiveAura = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Secondary.ProtectiveAura"), FString("护体罡气，增加角色的护体效果"));

	/* 元属性 */
	//经验值 修为值
	GameplayTags.Attributes_Meta_IncomingXP = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Meta.IncomingXP"), FString("经验值，表示角色获得的经验值"));
	//灵气值
	GameplayTags.Attributes_Meta_IncomingLingQi = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Attributes.Meta.IncomingLingQi"), FString("灵气值，表示角色获得的灵气值"));

	/*
	 * 按键映射标签
	 */
	//左键
	GameplayTags.InputTag_LMB = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("InputTag.LMB"), FString("左键"));
	//右键
	GameplayTags.InputTag_RMB = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("InputTag.RMB"), FString("右键"));
	// FGameplayTag InputTag_1;
	GameplayTags.InputTag_1 = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("InputTag.1"), FString("按键1"));
	// FGameplayTag InputTag_2;
	GameplayTags.InputTag_2 = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("InputTag.2"), FString("按键2"));
	// FGameplayTag InputTag_3;
	GameplayTags.InputTag_3 = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("InputTag.3"), FString("按键3"));
	// FGameplayTag InputTag_4;
	GameplayTags.InputTag_4 = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("InputTag.4"), FString("按键4"));
	//被动
	GameplayTags.InputTag_Passive_1 = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("InputTag.Passive.1"), FString("被动1"));
	GameplayTags.InputTag_Passive_2 = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("InputTag.Passive.2"), FString("被动2"));

	/* 属性抗性 */
	GameplayTags.Attributes_Resistance_Physical = UGameplayTagsManager::Get().AddNativeGameplayTag(
	    FName("Attributes.Resistance.Physical"), FString("物理抗性"));
	GameplayTags.Attributes_Resistance_Magic = UGameplayTagsManager::Get().AddNativeGameplayTag(
	    FName("Attributes.Resistance.Magic"), FString("法术抗性"));
	GameplayTags.Attributes_Resistance_Summon = UGameplayTagsManager::Get().AddNativeGameplayTag(
	    FName("Attributes.Resistance.Summon"), FString("召唤物品（例如符箓、阵法）抗性"));
	GameplayTags.Attributes_Resistance_Fire = UGameplayTagsManager::Get().AddNativeGameplayTag(
	    FName("Attributes.Resistance.Fire"), FString("火焰抗性"));
	GameplayTags.Attributes_Resistance_Water = UGameplayTagsManager::Get().AddNativeGameplayTag(
	    FName("Attributes.Resistance.Water"), FString("水属性抗性"));
	GameplayTags.Attributes_Resistance_Earth = UGameplayTagsManager::Get().AddNativeGameplayTag(
	    FName("Attributes.Resistance.Earth"), FString("土属性抗性"));
	GameplayTags.Attributes_Resistance_Wood = UGameplayTagsManager::Get().AddNativeGameplayTag(
	    FName("Attributes.Resistance.Wood"), FString("木属性抗性"));
	GameplayTags.Attributes_Resistance_Gold = UGameplayTagsManager::Get().AddNativeGameplayTag(
	    FName("Attributes.Resistance.Gold"), FString("金属性抗性"));
	GameplayTags.Attributes_Resistance_Ice = UGameplayTagsManager::Get().AddNativeGameplayTag(
	    FName("Attributes.Resistance.Ice"), FString("冰属性抗性"));
	GameplayTags.Attributes_Resistance_Lightning = UGameplayTagsManager::Get().AddNativeGameplayTag(
	    FName("Attributes.Resistance.Lightning"), FString("雷属性抗性"));
	GameplayTags.Attributes_Resistance_Wind = UGameplayTagsManager::Get().AddNativeGameplayTag(
	    FName("Attributes.Resistance.Wind"), FString("风属性抗性"));
	GameplayTags.Attributes_Resistance_Poison = UGameplayTagsManager::Get().AddNativeGameplayTag(
	    FName("Attributes.Resistance.Poison"), FString("毒属性抗性"));
	GameplayTags.Attributes_Resistance_Dark = UGameplayTagsManager::Get().AddNativeGameplayTag(
	    FName("Attributes.Resistance.Dark"), FString("暗属性抗性"));
	GameplayTags.Attributes_Resistance_Arcane = UGameplayTagsManager::Get().AddNativeGameplayTag(
	    FName("Attributes.Resistance.Arcane"), FString("奥术抗性"));

	/*
	 * 伤害标签
	 */
	GameplayTags.Damage = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Damage"), FString("伤害"));

	/*
	 * 伤害类型
	 */
	GameplayTags.Damage_Physical = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Damage.Physical"), FString("物理伤害"));
	GameplayTags.Damage_Magic = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Damage.Magic"), FString("法术伤害"));
	GameplayTags.Damage_Summon = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Damage.Summon"), FString("召唤物伤害"));
	GameplayTags.Damage_Fire = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Damage.Fire"), FString("火焰伤害"));
	GameplayTags.Damage_Water = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Damage.Water"), FString("水属性伤害"));
	GameplayTags.Damage_Earth = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Damage.Earth"), FString("土属性伤害"));
	GameplayTags.Damage_Wood = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Damage.Wood"), FString("木属性伤害"));
	GameplayTags.Damage_Gold = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Damage.Gold"), FString("金属性伤害"));
	GameplayTags.Damage_Ice = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Damage.Ice"), FString("冰属性伤害"));
	GameplayTags.Damage_Lightning = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Damage.Lightning"), FString("雷属性伤害"));
	GameplayTags.Damage_Wind = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Damage.Wind"), FString("风属性伤害"));
	GameplayTags.Damage_Poison = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Damage.Poison"), FString("毒属性伤害"));
	GameplayTags.Damage_Dark = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Damage.Dark"), FString("暗属性伤害"));
	GameplayTags.Damage_Arcane = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Damage.Arcane"), FString("虚空属性伤害"));
	/* 伤害类型 和 抗性的映射 Map */
	GameplayTags.DamageTypesToResistances.Add(GameplayTags.Damage_Physical, GameplayTags.Attributes_Resistance_Physical);
	GameplayTags.DamageTypesToResistances.Add(GameplayTags.Damage_Magic, GameplayTags.Attributes_Resistance_Magic);
	GameplayTags.DamageTypesToResistances.Add(GameplayTags.Damage_Summon, GameplayTags.Attributes_Resistance_Summon);
	GameplayTags.DamageTypesToResistances.Add(GameplayTags.Damage_Fire, GameplayTags.Attributes_Resistance_Fire);
	GameplayTags.DamageTypesToResistances.Add(GameplayTags.Damage_Water, GameplayTags.Attributes_Resistance_Water);
	GameplayTags.DamageTypesToResistances.Add(GameplayTags.Damage_Earth, GameplayTags.Attributes_Resistance_Earth);
	GameplayTags.DamageTypesToResistances.Add(GameplayTags.Damage_Wood, GameplayTags.Attributes_Resistance_Wood);
	GameplayTags.DamageTypesToResistances.Add(GameplayTags.Damage_Gold, GameplayTags.Attributes_Resistance_Gold);
	GameplayTags.DamageTypesToResistances.Add(GameplayTags.Damage_Ice, GameplayTags.Attributes_Resistance_Ice);
	GameplayTags.DamageTypesToResistances.Add(GameplayTags.Damage_Lightning, GameplayTags.Attributes_Resistance_Lightning);
	GameplayTags.DamageTypesToResistances.Add(GameplayTags.Damage_Wind, GameplayTags.Attributes_Resistance_Wind);
	GameplayTags.DamageTypesToResistances.Add(GameplayTags.Damage_Poison, GameplayTags.Attributes_Resistance_Poison);
	GameplayTags.DamageTypesToResistances.Add(GameplayTags.Damage_Dark, GameplayTags.Attributes_Resistance_Dark);
	GameplayTags.DamageTypesToResistances.Add(GameplayTags.Damage_Arcane, GameplayTags.Attributes_Resistance_Arcane);


	//火焰对应的燃烧 每秒造成火焰伤害，每层提升5%伤害 最多5层
	GameplayTags.Debuff_Propertie_Burn = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Debuff.Propertie.Burn"), FString("燃烧效果"));
	//闪电对应的眩晕 眩晕2.5秒
	GameplayTags.Debuff_Propertie_Stun = UGameplayTagsManager::Get().AddNativeGameplayTag(
	    FName("Debuff.Propertie.Stun"), FString("眩晕效果"));
	//水和冰属性寒冷效果 再次受到冰冷伤害伤害提升10%
	GameplayTags.Debuff_Propertie_Cold = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Debuff.Propertie.Cold"), FString("寒冷效果"));
	//水和冰属性冰冻效果 再次受到冰冷伤害造成爆炸伤害效果为30%
	GameplayTags.Debuff_Propertie_Freeze = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Debuff.Propertie.Freeze"), FString("冰冻效果"));
	//物理对应撕裂效果
	GameplayTags.Debuff_Propertie_Tear = UGameplayTagsManager::Get().AddNativeGameplayTag(
	 	FName("Debuff.Propertie.Tear"), FString("撕裂效果"));
	//减速效果
	GameplayTags.Debuff_Propertie_Slow = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Debuff.Propertie.Slow"), FString("减速效果"));
	//击倒效果
	GameplayTags.Debuff_Propertie_Down = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Debuff.Propertie.Down"), FString("击倒效果"));
	//木属性对应汲生吸取 吸收敌人生命 恢复自身
	GameplayTags.Debuff_Propertie_Leech = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Debuff.Propertie.Leech"), FString("汲生效果"));
	//毒属性对应中毒效果 每秒造成火焰伤害，每层提升1%伤害 最多99层
	GameplayTags.Debuff_Propertie_Poison = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Debuff.Propertie.Poison"), FString("毒素效果"));
	//出血效果 每秒造成流血伤害，每层提升2%伤害 最多12层
	GameplayTags.Debuff_Propertie_BloodLoss = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Debuff.Propertie.BiBloodLossnd"), FString("流血效果"));
	//阵法对应束缚效果 无法移动并降低防御10%
	GameplayTags.Debuff_Propertie_Bind = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Debuff.Propertie.Bind"), FString("束缚效果"));
	//暗属性易伤效果 受到的所有伤害提升20%
	GameplayTags.Debuff_Propertie_KnockBack = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Debuff.Propertie.KnockBack"), FString("易伤效果"));
	//风属性攻击-割裂出血 再次受到风系伤害 伤害提升
	GameplayTags.Debuff_Propertie_Bleed = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Debuff.Propertie.Bleed"), FString("割裂效果"));
	//土属性对应的迟钝效果 对方造成的伤害降低10% 并降低移速10%
	GameplayTags.Debuff_Propertie_Dull = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Debuff.Propertie.Dull"), FString("迟钝效果"));
	//金属性破甲效果 对方护甲减少15%
	GameplayTags.Debuff_Propertie_ArmorBreak = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Debuff.Propertie.ArmorBreak"), FString("破甲效果"));

	//异常类型
	GameplayTags.Debuff_Type = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Debuff.Type"), FString("异常类型"));
	//异常触发概率
	GameplayTags.Debuff_Chance = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Debuff.Chance"), FString("异常触发概率"));
	//异常伤害
	GameplayTags.Debuff_Damage = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Debuff.Damage"), FString("异常伤害"));
	//是否启用异常伤害百分比
	GameplayTags.Debuff_DamagePercentage = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Debuff.DamagePercentage"), FString("是否启用异常伤害百分比"));
	//异常触发频率
	GameplayTags.Debuff_Frequency = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Debuff.Frequency"), FString("异常触发频率"));
	//异常持续时间
	GameplayTags.Debuff_Duration = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Debuff.Duration"), FString("异常持续时间"));
	//伤害类型于负面效果关联
	// TMap<FGameplayTag,FGameplayTag> DamageTypesToDebuffs;
	/* 伤害类型 和 负面效果的映射 Map */
	GameplayTags.DamageTypesToDebuffs.Add(GameplayTags.Damage_Fire, GameplayTags.Debuff_Propertie_Burn);
	GameplayTags.DamageTypesToDebuffs.Add(GameplayTags.Damage_Lightning, GameplayTags.Debuff_Propertie_Stun);
	GameplayTags.DamageTypesToDebuffs.Add(GameplayTags.Damage_Water, GameplayTags.Debuff_Propertie_Cold);
	GameplayTags.DamageTypesToDebuffs.Add(GameplayTags.Damage_Ice, GameplayTags.Debuff_Propertie_Freeze);
	GameplayTags.DamageTypesToDebuffs.Add(GameplayTags.Damage_Physical, GameplayTags.Debuff_Propertie_Tear);
	GameplayTags.DamageTypesToDebuffs.Add(GameplayTags.Damage_Wood, GameplayTags.Debuff_Propertie_Leech);
	GameplayTags.DamageTypesToDebuffs.Add(GameplayTags.Damage_Poison, GameplayTags.Debuff_Propertie_Poison);
	GameplayTags.DamageTypesToDebuffs.Add(GameplayTags.Damage_Wind, GameplayTags.Debuff_Propertie_Bleed);
	GameplayTags.DamageTypesToDebuffs.Add(GameplayTags.Damage_Earth, GameplayTags.Debuff_Propertie_Dull);
	GameplayTags.DamageTypesToDebuffs.Add(GameplayTags.Damage_Gold, GameplayTags.Debuff_Propertie_ArmorBreak);
	GameplayTags.DamageTypesToDebuffs.Add(GameplayTags.Damage_Dark, GameplayTags.Debuff_Propertie_KnockBack);
	GameplayTags.DamageTypesToDebuffs.Add(GameplayTags.Damage_Summon, GameplayTags.Debuff_Propertie_Bind);
	
	/* 攻击能力标签 */
	GameplayTags.Abilities_None = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Abilities.None"), FString("无能力标签 - 类似于能力标签的空指针"));
	GameplayTags.Abilities_Attack = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Abilities.Attack"), FString("攻击能力标签"));
	GameplayTags.Abilities_Summon = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Abilities.Summon"), FString("召唤能力标签"));

	// //能力受击反应
	GameplayTags.Abilities_HitReact = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Abilities.HitReact"), FString("受击反应能力标签"));

	/* 能力状态标签 */
	//能力状态 - 锁定
	GameplayTags.Abilities_Status_Locked = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Abilities.Status.Locked"), FString("锁定能力标签"));
	//能力状态 - 可解锁
	GameplayTags.Abilities_Status_Eligible = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Abilities.Status.Eligible"), FString("可解锁能力标签"));
	//能力状态 - 已解锁
	GameplayTags.Abilities_Status_Unlocked = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Abilities.Status.Unlocked"), FString("已解锁能力标签"));
	//能力状态 - 装备
	GameplayTags.Abilities_Status_Equipped = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Abilities.Status.Equipped"), FString("装备能力标签"));
	/* 能力类型标签 */
	//能力类型 - 主动
	GameplayTags.Abilities_Type_Offensive = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Abilities.Type.Offensive"), FString("主动能力标签"));
	//能力类型 - 被动
	GameplayTags.Abilities_Type_Passive = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Abilities.Type.Passive"), FString("被动能力标签"));
	//能力类型 - 无（用于清空技能栏）
	GameplayTags.Abilities_Type_None = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Abilities.Type.None"), FString("无能力标签"));

	/* 能力法术技能标签 */
	//火球术
	GameplayTags.Abilities_Fire_FireBolt = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Abilities.Fire.FireBolt"), FString("火球术能力标签"));
	//火球冲击爆炸
	GameplayTags.Abilities_Fire_FireBlast = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Abilities.Fire.FireBlast"), FString("火球冲击爆炸能力标签"));
	//电击术
	GameplayTags.Abilities_Lightning_Electrocute = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Abilities.Lightning.Electrocute"), FString("电击能力标签"));
	//虚空碎片
	GameplayTags.Abilities_Arcane_ArcaneShards = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Abilities.Arcane.ArcaneShards"), FString("虚空碎片标签"));

	/* 被动技能名称标签*/
	//Protection 被动护盾
	GameplayTags.Abilities_Passive_HaloOfProtection = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Abilities.Passive.HaloOfProtection"), FString("被动护盾能力标签"));
	//生命吸取被动
	GameplayTags.Abilities_Passive_LifeSiphon = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Abilities.Passive.LifeSiphon"), FString("生命吸取被动能力标签"));
	//法力吸取被动
	GameplayTags.Abilities_Passive_ManaSiphon = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Abilities.Passive.ManaSiphon"), FString("法力吸取被动能力标签"));

	/* 技能冷却标签 */
	GameplayTags.Cooldown_Fire_FireBolt = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Cooldown.Fire.FireBolt"), FString("火球术冷却标签"));
	GameplayTags.Cooldown_Lightning_Electrocute = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Cooldown.Lightning.Electrocute"), FString("电击冷却标签"));

	/* 战斗插槽标签，用于在蓝图中获取战斗插槽 */
	GameplayTags.CombatSocket_Weapon = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("CombatSocket.Weapon"), FString("战斗插槽 蒙太奇攻击动画 武器"));
	GameplayTags.CombatSocket_LeftHand = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("CombatSocket.LeftHand"), FString("战斗插槽 蒙太奇攻击动画 左手"));
	GameplayTags.CombatSocket_RightHand = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("CombatSocket.RightHand"), FString("战斗插槽 蒙太奇攻击动画 右手"));
	GameplayTags.CombatSocket_Tail = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("CombatSocket.Tail"), FString("战斗插槽 蒙太奇攻击动画 尾巴"));

	/* 蒙太奇标签 用于绑定攻击动画蒙太奇可单一播放或者用于连招 还有在 gameplay cue 提示中使用 ，发送攻击特效等 */
	GameplayTags.Montage_Attack_1 = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("Montage.Attack.1"), FString("蒙太奇攻击动画1"));
	GameplayTags.Montage_Attack_2 = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Montage.Attack.2"), FString("蒙太奇攻击动画2"));
	GameplayTags.Montage_Attack_3 = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Montage.Attack.3"), FString("蒙太奇攻击动画3"));
	GameplayTags.Montage_Attack_4 = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Montage.Attack.4"), FString("蒙太奇攻击动画4"));
	GameplayTags.Montage_Attack_5 = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Montage.Attack.5"), FString("蒙太奇攻击动画5"));
	
	/* 受击效果 */
	GameplayTags.Effects_HitReact = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Effects.HitReact"), FString("受击效果"));


	/* 禁用玩家输入行为标签,用于一些操作时或过长时 禁止玩家输入 */
	GameplayTags.Player_Block_InputPressed = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Player.Block.InputPressed"), FString("禁用按下输入"));
	GameplayTags.Player_Block_InputHeld = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Player.Block.InputHeld"), FString("禁用按住输入"));
	GameplayTags.Player_Block_InputReleased = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Player.Block.InputReleased"), FString("禁用释放输入"));
	GameplayTags.Player_Block_CursorTrace = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("Player.Block.CursorTrace"), FString("禁用光标效果"));

	/*
	 * 游戏通知标签，用于发送游戏通知（播放技能效果）
	 */
	GameplayTags.GameplayCue_FireBlast = UGameplayTagsManager::Get().AddNativeGameplayTag(
	FName("GameplayCue.FireBlast"), FString("火爆术技能通知"));

}
